package controller;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

import bean.Funcionario;

public class FuncionarioControl {
	
	private int countCodigoFuncionario;
	private List<Funcionario> listaFuncionarios;
	
	public static final String SEPARADOR = "---------------------------------------------";
	
	
	public FuncionarioControl(){
		this.listaFuncionarios = new ArrayList<Funcionario>();
		this.countCodigoFuncionario = 1;
	}
	
	public void inserirFuncionario(Funcionario funcionario) throws Exception{
		funcionario.inserirDados();
		funcionario.setCodigo(countCodigoFuncionario);
		listaFuncionarios.add(funcionario);
		countCodigoFuncionario++;
	}
	
	public void excluirFuncionario() {
		listaFuncionarios = new ArrayList<Funcionario>();
		countCodigoFuncionario = 1;
		JOptionPane.showMessageDialog(null,"Todos os funcionários foram removidos com sucesso!");
	}
	
	public void excluirFuncionario(int codigo) {

		boolean flag = false;

		for (Funcionario func : listaFuncionarios) {
			if (func.getCodigo() == codigo) {
				listaFuncionarios.remove(func);
				flag = true;
				break;
			}
		}

		if (flag)
			JOptionPane.showMessageDialog(null, "Funcionário removido com sucesso!");
		else
			JOptionPane.showMessageDialog(null, "Não existe nenhum funcionário com esse código!");

	}
	
	public void alterarFuncionario(int codigo) throws Exception {

		boolean alterou = false;
        int index = 0;
		for (Funcionario func : listaFuncionarios) {
			if (func.getCodigo() == codigo) {
				func.alterarDados();
				listaFuncionarios.set(index, func);
				alterou = true;
				break;
			}
			index++;
		}

		if (alterou)
			JOptionPane.showMessageDialog(null, "Registro alterado com sucesso!");
		else
			JOptionPane.showMessageDialog(null, "Código inválido!" , "Atenção:.", JOptionPane.WARNING_MESSAGE );
	}
	
	public String listarFuncionarios(){
		String out = SEPARADOR + "\n";
		
		for (Funcionario func : listaFuncionarios) 
			out += func + "\n" + SEPARADOR + "\n";
		
		return out;		
	}
	
	public String buscarPorNome(String nome) {
		String saida = "";
		for (Funcionario funcionario : listaFuncionarios) {
			if (funcionario.getNome().equalsIgnoreCase(nome)) {
				saida += funcionario + "\n\n";
			}
		}
		
		if (saida.equals(""))
			return null;

		return saida += "Digite o código do funcionário deve ser removido";
	}
	
	public boolean existeFuncionario(){
		return listaFuncionarios != null && !listaFuncionarios.isEmpty();
	}
	
	public List<Funcionario> getListaFuncionarios() {
		return listaFuncionarios;
	}

	public void setListaFuncionarios(List<Funcionario> listaFuncionarios) {
		this.listaFuncionarios = listaFuncionarios;
	}

	public int getCountCodigoFuncionario() {
		return countCodigoFuncionario;
	}

	public void setCountCodigoFuncionario(int countCodigoFuncionario) {
		this.countCodigoFuncionario = countCodigoFuncionario;
	}
}